Contemporary computing systems involve the execution of applications within an operating system. The operating system involves a wide variety of data objects, such as files stored in a file system, databases stored in a database management system, application and system configuration information stored in a system registry, and a set of user accounts. Applications are often modeled with an architecture involving an accessing of various types of data objects, some logic applicable to the data objects as a set of operations, and a rendering of the operations and data objects in the form of a user interface.
The application may also be executed in a virtual environment that offers the application a limited set of computing resources (such as storage space, processing, and devices) with which the application may operate. In some cases, the virtual environment may represent a standardized platform against which the application may execute, thereby promoting the consistent execution of the application on a wide variety of machines, and the virtual environment may translate operations against the virtual environment to operations that may be performed by the computer (e.g., the platform may permit the application to store the data object in an emulated data store, but the virtual environment may instead store the data object as a file in the filesystem.) This virtualization may also promote the security of the application, both by restricting the manner in which the application may access the computing environment (e.g., in case the application is not fully trusted and may contain faulty or malicious instructions) and by reducing interference in the application from other processes executing both with and outside the virtual environment.
One common virtual environment is a web browser. Web applications are often developed for execution in a web browser, and may be executed by delivering the application resources comprising the application to the computer for execution within the web browser.